馃И test(web): pin blob health into node liveness - #2258
Merged
Conversation
`local_status` folds two observations into one liveness verdict: the journal serial and the blob store health. Every existing test built an app whose blob root was a usable directory, so both observations agreed and nothing decided which operator joined them. Relaxing that `&&` to `||` left all 185 peryx-web tests green while making a node with an unreadable blob root advertise itself as Live, which is the one answer the topology page exists to get right. The new case drives the only state that separates the two: a regular file where the blob root belongs, so the health check fails on its `create_dir_all` while the journal read beside it still succeeds. It runs the healthy shape as well, because a pair that reports Unready in both directions would pass against an implementation that never reports Live. Refs #1893
13 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The topology page reports a node as
NodeLiveness::LiveorNodeLiveness::Unready, andssr::topology::local_statusdecides that from two readings joined with&&: the journal serial, and blob store health. Existing fixtures handed it a blob root that worked, so both readings agreed and the join itself went undecided. Relaxing it to||kept the suite green, which means a node whose blob store had become unreadable would still have shown as Live to an operator reading the page.This branch drives the one state that separates the two operators: a regular file sitting where the blob root belongs, so
create_dir_allin the health check fails while the journal read beside it still answers. It runs the working shape too, since a pair that reportsUnreadyboth ways would agree with an implementation stuck onUnready.local_statusand the surrounding rendering stay as they were. This closes the last surviving mutant inperyx-webcode that the--all-featuresbuild compiles; the other 136 the nightly reports for this crate sit behindcfggates that the same build strips, which #2208 covers.Refs #1893